#define _CRT_SECURE_NO_WANINGS 1
#pragma warning(disable: 4996)

//bool isUnivalTree(struct TreeNode* root) {
//    if (root == NULL)
//    {
//        return true;
//    }
//    if (root->left != NULL && root->left->val != root->val)
//    {
//        return false;
//    }
//    if (root->right != NULL && root->right->val != root->val)
//    {
//        return false;
//    }
//    return isUnivalTree(root->left) && isUnivalTree(root->right);
//}
//bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
//    if (p == NULL && q == NULL)
//    {
//        return true;
//    }
//    if (p == NULL || q == NULL)
//    {
//        return false;
//    }
//    if (q != NULL && p != NULL)
//    {
//        if (q->val != p->val)
//        {
//            return false;
//        }
//    }
//    return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
//}
//void preorderval(struct TreeNode* root, int* a, int* i)
//{
//    if (root == NULL)
//    {
//        return;
//    }
//    a[(*i)++] = root->val;
//    preorderval(root->left, a, i);
//    preorderval(root->right, a, i);
//
//}
//int preordersize(struct TreeNode* root)
//{
//    if (root == NULL)
//    {
//        return 0;
//    }
//    return preordersize(root->left) + preordersize(root->right) + 1;
//}
//int* preorderTraversal(struct TreeNode* root, int* returnSize) {
//    int n = preordersize(root);
//    int* a = (int*)malloc(sizeof(int) * n);
//    *returnSize = n;
//    int i = 0;
//    preorderval(root, a, &i);
//    return a;
//}